const fs = require('fs')
const path = require('path')

// // 1. readFile
// // 参数1 路径 参数2 字符编码 参数3 回调函数
// fs.readFile(path.resolve('data1.txt'), 'utf-8', (err,data)=>{
//   console.log(err)
//   if(!err){
//     console.log(data)
//   }
// })

// // 2. writeFile
// // (1) 写入操作是覆盖式的
// // (2) 如果文件不存在，则会执行创建文件的操作
// fs.writeFile('data1.txt', '123', {
//   mode: 438,//模式
//   flag: 'w+',//标识类
//   encoding: 'utf-8'
// }, (err)=>{
//   if(!err){
//     fs.readFile('data1.txt', 'utf-8', (err2,data)=>{
//       console.log(data)
//       // hello node.js
//       // r+： 123lo node.js
//       // w+： 123
//     })
//   }
// })

// // 3. appendFile
// fs.appendFile('data.txt', '拉勾教育', {}, (err)=>{
//   if(!err){
//     console.log('写入成功')
//   }
// })
// // hello node.js拉勾教育

// // 4. copyFile
// fs.copyFile('data.txt', 'test.txt', (err)=>{
//   if(!err){
//     console.log('复制成功')
//   }
// })

// 5. watchFile
// interval 监控文件时间相关，单位毫秒，代表多少时间监控一次文件是否变化
fs.watchFile('data.txt', {interval: 500},(cur,prev)=>{
  // mtime 文件修改时间 用于判断是否修改
  if(cur.mtime !== prev.mtime){
    console.log('文件被修改了')
    console.log('当前的',cur)
    console.log('之前的',prev)
    fs.unwatchFile('data.txt')//解除文件监控
    // 当前的 Stats {
    //   dev: 1101588425,     
    //   mode: 33206,
    //   nlink: 1,
    //   uid: 0,
    //   gid: 0,
    //   rdev: 0,
    //   blksize: 4096,       
    //   ino: 844424930405847,
    //   size: 4,
    //   blocks: 0,
    //   atimeMs: 1630485503311.238,
    //   mtimeMs: 1630485503311.238,
    //   ctimeMs: 1630485503311.238,
    //   birthtimeMs: 1630483896793.236,
    //   atime: 2021-09-01T08:38:23.311Z,
    //   mtime: 2021-09-01T08:38:23.311Z,
    //   ctime: 2021-09-01T08:38:23.311Z,
    //   birthtime: 2021-09-01T08:11:36.793Z
    // }
    // 之前的 Stats {
    //   dev: 1101588425,
    //   mode: 33206,
    //   nlink: 1,
    //   uid: 0,
    //   gid: 0,
    //   rdev: 0,
    //   blksize: 4096,
    //   ino: 844424930405847,
    //   size: 25,
    //   blocks: 0,
    //   atimeMs: 1630485497158.0469,
    //   mtimeMs: 1630484939274.6375,
    //   ctimeMs: 1630484939274.6375,
    //   birthtimeMs: 1630483896793.236,
    //   atime: 2021-09-01T08:38:17.158Z,
    //   mtime: 2021-09-01T08:28:59.275Z,
    //   ctime: 2021-09-01T08:28:59.275Z,
    //   birthtime: 2021-09-01T08:11:36.793Z
    // }
  }
})